import random
import string
import os

def generate_unique_test_cases(num_cases=15):
    test_cases = set()  # 使用集合存储唯一的测试数据

    while len(test_cases) < num_cases:
        # 随机选择生成的情况类型
        case_type = random.choice([0, 1, 2])
        
        if case_type == 0:
            # 输出为 0：三个字符相同
            char = random.choice(string.ascii_lowercase)
            test_cases.add(char * 3)  # 例如 "aaa", "bbb"
        
        elif case_type == 1:
            # 输出为 1：两个字符相同，一个不同
            chars = random.sample(string.ascii_lowercase, 2)
            same_char = chars[0]
            diff_char = chars[1]
            test_cases.add("".join(random.sample([same_char, same_char, diff_char], 3)))  # 例如 "aab", "baa"
        
        elif case_type == 2:
            # 输出为 2：三个字符都不同
            chars = random.sample(string.ascii_lowercase, 3)
            test_cases.add("".join(chars))  # 例如 "abc", "xyz"

    return list(test_cases)  # 转换为列表以便随机化顺序

def write_to_files(num_files=15):
    # 指定保存路径
    output_directory = r"C:\Users\ASUS\Desktop\2024年新生赛出题\2024年新生赛出题(非大一组)\A题"
    
    # 确保目录存在
    os.makedirs(output_directory, exist_ok=True)

    # 获取生成的测试数据
    test_cases = generate_unique_test_cases(num_files)
    random.shuffle(test_cases)  # 打乱顺序

    for i in range(1, num_files + 1):
        filename = os.path.join(output_directory, f"{i}.in")
        
        with open(filename, 'w') as f:
            # 每个文件写入一个测试用例
            f.write(f"{test_cases[i - 1]}\n")
        
        print(f"测试数据已生成并保存到 {filename} 文件中，包含一个测试字符串：{test_cases[i - 1]}")

# 生成 15 个 .in 文件
write_to_files(num_files=15)
